package main

import (
	"fmt"
)

/*
最大重复子字符串
给你一个字符串 sequence ，如果字符串 word 连续重复 k 次形成的字符串是 sequence 的一个子字符串，那么单词 word 的 重复值为 k
单词 word 的 最大重复值 是单词 word 在 sequence 中最大的重复值。如果 word 不是 sequence 的子串，那么重复值 k 为 0 。
给你一个字符串 sequence 和 word ，请你返回 最大重复值 k 。


示例 1：
输入：sequence = "ababc", word = "ab"
输出：2
解释："abab" 是 "ababc" 的子字符串。

示例 2：
输入：sequence = "ababc", word = "ba"
输出：1
解释："ba" 是 "ababc" 的子字符串，但 "baba" 不是 "ababc" 的子字符串。

"aaabaaaabaaabaaaabaaaabaaaabaaaaba"
"aaaba"
 */
func max(a, b int) int {
	if a > b {
		return a
	}
	return b
}

func maxRepeating(sequence string, word string) int {
	var (
		ans      int = 0
		len_word     = len(word)
		len_seq      = len(sequence)
		dp           = make([]int, len_seq)
	)
	for i := range sequence {
		if i+len_word <= len_seq && sequence[i:i+len_word] == word {
			if i >= len_word {
				dp[i] = dp[i-len_word] + 1
			} else {
				dp[i] = 1
			}
			ans = max(ans, dp[i])
		}
	}
	return ans
}


func main() {
	fmt.Println(maxRepeating("aaabaaaabaaabaaaabaaaabaaaabaaaaba","aaaba"))
}
